1. Go to this page and download the library: Download juststeveking/tabstack library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
juststeveking / tabstack example snippets
use JustSteveKing\Tabstack\Tabstack;
use JustSteveKing\Tabstack\Requests\AgentAutomate;
$client = Tabstack::make(apiKey: $_ENV['TABSTACK_API_KEY']);
$response = $client->agent()->automate(
params: new AgentAutomate(
task: 'Find the top 3 trending repositories and extract their names, descriptions, and star counts',
),
);
use JustSteveKing\Tabstack\Tabstack;
use JustSteveKing\Tabstack\Requests\ExtractJson;
use JustSteveKing\Tabstack\Responses\ExtractJsonResponse;
$client = Tabstack::make(apiKey: $_ENV['TABSTACK_API_KEY']);
$params = new ExtractJson(
url: 'https://example.com/products',
jsonSchema: [
'type' => 'object',
'properties' => [
'name' => ['type' => 'string'],
'price' => ['type' => 'number'],
],
],
);
$result = $client->extract()->json(params: $params);
// $result->data — the extracted structured data as an array
use JustSteveKing\Tabstack\Requests\ExtractMarkdown;
use JustSteveKing\Tabstack\Requests\MarkdownContent;
use JustSteveKing\Tabstack\Responses\ExtractMarkdownResponse;
$result = $client->extract()->markdown(
params: new ExtractMarkdown(
url: 'https://example.com/article',
content: MarkdownContent::Main, // Main (article only, default) | Full (entire page)
metadata: true,
),
);
// $result->content — clean Markdown string
// $result->url — original URL
// $result->metadata — title, description, image (when metadata: true)
use JustSteveKing\Tabstack\Requests\GenerateJson;
use JustSteveKing\Tabstack\Responses\GenerateJsonResponse;
$result = $client->generate()->json(
params: new GenerateJson(
url: 'https://example.com/article',
instructions: 'Summarise the article and list key takeaways.',
jsonSchema: [
'type' => 'object',
'properties' => [
'summary' => ['type' => 'string'],
'takeaways' => ['type' => 'array', 'items' => ['type' => 'string']],
],
],
),
);
// $result->data — AI-transformed structured data
use JustSteveKing\Tabstack\Requests\EffortLevel;
use JustSteveKing\Tabstack\Requests\ExtractMarkdown;
$result = $client->extract()->markdown(
params: new ExtractMarkdown(
url: 'https://example.com',
effort: EffortLevel::Max, // Min | Standard | Max
),
);
use JustSteveKing\Tabstack\Requests\ExtractMarkdown;
use JustSteveKing\Tabstack\Requests\GeoTarget;
$result = $client->extract()->markdown(
params: new ExtractMarkdown(
url: 'https://example.com',
geoTarget: new GeoTarget(country: 'GB'),
),
);
use JustSteveKing\Tabstack\Requests\AgentResearch;
use JustSteveKing\Tabstack\Requests\ResearchMode;
$stream = $client->agent()->research(
params: new AgentResearch(
query: 'What are the latest advancements in quantum computing?',
mode: ResearchMode::Balanced,
),
);
// 1. Iterate — process each event as it streams in
foreach ($stream as $event) {
echo $event->event . PHP_EOL; // e.g. "searching:start", "writing:end", "complete"
}
// 2. Callback — invoke a handler per event
$stream->each(function ($event): void {
// $event->event is the event name, $event->data the payload
});
// 3. Collect — drain the whole stream into an array of events
$events = $stream->collect();
// 4. Wait — block until the task settles, returning the terminal event
// (complete / error, plus done for automate)
$final = $stream->wait();
// 5. Result — block and map the terminal `complete` event to a typed result
$report = $stream->result(); // ResearchResult|null (AutomateResult|null for automate)
$report = $client->agent()->research(
params: new AgentResearch(query: 'Latest in quantum computing'),
)->result();
echo $report->report; // the synthesised report (markdown)
echo $report->metadata->get('totalPagesAnalyzed');
$result = $client->agent()->automate(params: $task)->result();
if ($result->success) {
echo $result->finalAnswer;
echo $result->stats?->durationMs;
}
$final = $client->agent()->research(
params: new AgentResearch(query: 'Latest in quantum computing'),
)->wait();
$answer = $final->data->get('answer'); // accessor, with optional default
$sources = $final->data->get('sources', []);
$hasMeta = $final->data->has('metrics'); // key presence
$raw = $final->data->toArray(); // back to a plain array
$answer = $final->data['answer']; // ArrayAccess (read-only)
use JustSteveKing\Tabstack\Requests\AgentAutomate;
use JustSteveKing\Tabstack\Requests\AgentAutomateInput;
use JustSteveKing\Tabstack\Requests\InputField;
$stream = $client->agent()->automate(
params: new AgentAutomate(
task: 'Sign in and download the latest invoice',
url: 'https://example.com/login',
interactive: true,
),
);
foreach ($stream as $event) {
if ('interactive:form_data:request' === $event->event) {
$client->agent()->automateInput(
params: new AgentAutomateInput(
requestId: $event->data->get('requestId'),
fields: [
new InputField(ref: 'email', value: '[email protected]'),
new InputField(ref: 'password', value: $_ENV['SITE_PASSWORD']),
],
),
);
}
}
use JustSteveKing\Tabstack\Requests\AgentAutomate;
new AgentAutomate(
task: 'Complete the checkout flow',
url: 'https://shop.example.com',
trustedHostnames: ['shop.example.com'], // bypass the firewall for these hosts only
unsafeMode: false, // true disables the firewall entirely — avoid in production
);
use JustSteveKing\Tabstack\Tabstack;
$client = Tabstack::make(
apiKey: $_ENV['TABSTACK_API_KEY'],
baseUri: 'https://api.tabstack.ai/v1', // optional, this is the default
client: $myConfiguredPsr18Client, // optional, otherwise auto-discovered
);